Computer and information networks such as the Internet allow computer systems to exchange streams of data such as audio data, video data, multimedia data or other stream data or content between software applications that operate on such computer systems. As an example, a user controlling a web browser operating on a client computer system can select a hyperlink that corresponds to audio stream data that an audio stream server computer system can serve to the client computer system over the Internet. In response to such a user selection, the web browser can invoke an audio player software application that operates in conjunction with the web browser on the client computer system. The audio player software application can communicate with the audio stream server software application operating on the audio stream computer system over the computer network using in order to establish an audio stream data connection between the client computer system and the audio server. Once such a connection is established, the audio stream server can begin serving or streaming the audio stream data in a series of data packets using a stream transfer protocol back to the audio player software application operating on the client computer system. The audio player software application can then play the audio data through speakers coupled to the client computer system for the enjoyment of the user.
There exist a variety of conventional stream transfer protocols that provide for and support the transfer of stream data between computer systems, such as the client and server computers mentioned above, over a computer network such as the Internet. Some stream transfer protocols are real-time protocols while others can distribute stream data or other content or media in a non-real-time manner.
One example of a real-time or near real-time data transfer or streaming communications protocol is the multicast protocol. The multicast protocol or “multicasting” as it is called allows a server computer system to serve stream data as a single series or stream of packets that are each addressed to a predetermined multicast destination network address called a multicast group address that identifies the stream of data contained within the series of packets. As an example, a radio station might operate an multicasting audio server using the multicast protocol to serve a stream of packets containing the audio data broadcast from the radio station onto the Internet. Each multicast packet of audio data contains the same multicast destination network address (e.g., the multicast IP address). Multicast-equipped data communications devices such as routers and switches within the Internet can route the packets addressed to the multicast destination network address towards client computer systems that request to subscribe or “join” to the multicast group identified by the multicast address.
Many streaming data transfer and communications protocols such as multicast only require that a single copy of each packet of the stream data (such as the audio data in the aforementioned example) be transferred once over any particular data link (i.e., a coupling between two data communications devices) in a computer network regardless of how many subscribers or listeners (i.e., clients) are receiving that stream of data. This avoids having to transfer a separate packet of stream data over the same data link to each client that the desires to receive the stream data. Through the use of multicast management protocols, multicast-equipped data communications devices within a computer network are able to determine onto which data links a received multicast packet must be forwarded in order to ensure that all clients currently subscribed to the multicast group associated with that packet can successfully receive the stream data.
As an example, a single stream of multicast packets containing streaming audio data may propagate through a computer network for a number of network “hops” (i.e., individual data links coupling data communications devices) before being split or branched within a data communications device that serves different portions of the computer network that each contain clients desiring to receive that stream data. When the single stream of multicast packets arrive at this data communications device, this data communications device is capable of replicating or splitting the single received multicast packet stream into duplicate multicast packet streams which the data communications device then forwards onto the respective different portions of computer network (i.e., onto two or more data links or hops) towards their destination client devices.
For further details on the operation of the multicast protocol, reference is made to Request For Comment 1075 (RFC-1075) entitled “Distance Vector Multicast Routing Protocol (DVMRP)” which is a document maintained by the Internet Engineering Task Force (IETF) that specifies an Internet standards track routing protocol for Multicast. The entire teaching and contents of the RFC-1075 document are hereby incorporated by reference herein in their entirety. Other streaming media protocols also exist and operate to coordinate the distribution and transfer of stream data through a computer network such as the Internet. Each of these conventional stream distribution protocols attempts to implement an efficient one-to-many communications technique. Examples of other such protocols are the Real Time Protocol (RTP), RealNetworks RDT protocol and Microsoft's MMSU/MMST protocols.
Another type of Multicasting is referred to as Application Level Multicasting or ALM. ALM provides for a data stream distribution strategy that “overlays” a virtual distribution or routing hierarchy over an Internet Protocol (IP) routing topology. Using ALM, servers or hosts (referred to herein as ALM nodes), as opposed to routers and switches within the network, are responsible for replicating packets or data to end points. Accordingly, in ALM, routers in the underlying IP network merely treat ALM packets as regular unicast packets of data.